///******************** NG.Respate(C)  **********************************
//* 产品名称: Respate 科技
//* 文件名称: signal.c
//* 程序作者: 雷帕特公司(南宫子萍)
//* 程序版本: V1.1														   
//* 编制日期: 2019/1/29
//* 功能描述: 系统日志
//* QQ:	2085827949
//**********************************************************************/

#include <unistd.h>
#include <stdlib.h>
#include "stdlib.h"
#include "lap_lib.h"
#include "laperro.h"

#if 0

// 线程安全
#include <pthread.h>
// int pthread_mutex_lock(pthread_mutex_t *mutex);
// int pthread_mutex_trylock(pthread_mutex_t *mutex);
// int pthread_mutex_unlock(pthread_mutex_t *mutex);

pthread_mutex_t *mutex;

void* new_thread(void* arg)
{
    char buff[]="lap";

    while (1)
    {
        usleep(1000*800);
        // 3. 加锁
        pthread_mutex_lock(mutex);

        for(int i=0;i<sizeof(buff);i++)
        {
            putchar(buff[i]);
            if(i>= sizeof(buff)-1) putchar('\n');
            usleep(1000*100);
        }

        pthread_mutex_unlock(mutex);
    }
    
}



static void Lap_mutex()
{
    pthread_t pth;
    char buff[]="respate@";

    // 1.创建MUTEX
    mutex = (pthread_mutex_t*)malloc(sizeof(pthread_mutex_t));

    // 2.初始化mutex
    pthread_mutex_init(mutex,NULL);


    // 创建线程
    pthread_create(&pth,NULL,new_thread,NULL);
    pthread_detach(pth);    // 线程分离

    while (1)
    {
        usleep(1000*800);

        // 3. 加锁
        pthread_mutex_lock(mutex);

        for(int i=0;i<sizeof(buff);i++)
        {
            putchar(buff[i]);
            if(i>= sizeof(buff)-1) putchar('\n');
            usleep(1000*100);
        }

        pthread_mutex_unlock(mutex);
    }

    // 4.销毁互斥锁
    pthread_mutex_destroy(mutex);

    // 5.释放内存
    free(mutex);
}


int main(void)
{
    LAP_ErrOutSet(NULL);  // 初始化 错误信息

    Lap_mutex();
    return 0;
}
#endif